Systems and methods for an improved tag counting process

ABSTRACT

Systems and methods for operating a tag reader. The methods comprise: performing tag read operations by the tag reader to read tags; processing first information received from the read tags to identify which tags are newly detected tags; adding entries for the newly detected tags in a local list stored in a local memory of the tag reader; communicating second information at least identifying the newly detected tags from the tag reader to a remote computing device; receiving, by the tag reader, feedback information generated by the remote computing device which specifies at least a count of entries added to a remote list stored in a remote datastore based on the second information; and selectively outputting a notification from the tag reader based on the value of the count.

CLAIM OF PRIORITY

This application claims priority to U.S. patent application Ser. No.15/493,355 entitled “Systems and Methods for an Improved Tag CountingProcess,” which was filed on Apr. 21, 2017 and is incorporated byreference herein.

BACKGROUND Statement of the Technical Field

The present disclosure relates generally to Radio FrequencyIdentification (“RFID”) devices. More particularly, the presentinvention relates to implementing systems and methods for an improvedtag counting process.

Description of the Related Art

Various methods have been used for reading and tracking RFID tags tiedto inventory items in large stores and inventory areas. Cost of fixedinfrastructure (such as mounted antennas) as well as the difficulty inproviding full read coverage in constantly changing inventory locationshas led to the use of handheld (and mobile) RFID readers for inventorycycle counting (actual read of inventory).

For small locations, a single person with a handheld reader can readhundreds of RFID tags per second and cover a store in a fairly shortperiod of time. The problem comes in when large stores with millions ofRFID tags deploys tens of people to try to capture an accurate inventoryread and avoid multiple reads from the various users so they do notrepeat scans in areas.

During cycle counting when the RFID readers are scanning an area,feedback is given to the users of the handheld RFID reader as (a) beepsfor found RFID tags and (b) a visual counter showing an increasing totalof RFID tag reads. This is often done as one beep per RFID tag found.

The current inventorying method is to download the entire database ofknown RFID tags into each handheld RFID reader as a list of RFID tagidentifiers. As each RFID reader discovers RFID tags, it removes thecorresponding RFID tag identifier from the list, and only beeps orcounts the first time it finds a new RFID tag (i.e., an RFID tag havingan RFID tag identifier which is not contained in the list). The RFIDreader periodically sends information associated with new RFID tag findsto a remote server. The remote server tracks the cycle countingprogress. One of the problems is that the RFID tag identifiers sent fromeach RFID reader are used to search through the data to find thecorresponding records and update the status of those records. Theperformance of the database (which is being fed RFID tag identifiersfrom tens of RFID readers) causes delays in the system.

The above-described conventional method causes large delays at the startof cycle counting because all of the handheld RFID readers need toreceive and process information for a million or more RFID tags. As thenumber of RFID tags in a store increases, the memory and capability ofthe RFID readers will be exceeded. This conventional method also causesmajor problems in Wi-Fi or communications traffic because the RFID tagread information uploaded by each RFID reader is distributed to each ofthe other RFID readers to prevent duplicate counting and beeping. Thisbasically multiplies the bandwidth traffic by the number of RFID readersused in a cycle count. Additionally, it is difficult (a) to monitorprogress during the cycle count, (b) to know when a count has reached areasonable or useable level of completion (no count is 100% so theprocess must be stopped at a cost effective point), and (c) to correlatethe timing and efficiency of counters (unless all devices aresufficiently time synced before the start of a cycle counting).

In some situations, certain RFID tags are identified as not to becounted during the cycle. These RFID tags are called exclusions.Exclusions are marked as non-counted tags in the lists downloaded intoeach RFID reader. The problem is that the size of the inventory (e.g.,in millions) is exceeding the abilities of the RFID readers. The time toinitially send the list of millions of RFID tag identifiers to the RFIDreaders is also a delay in the start of a tag read process. The volumeof RFID tags sent to the cloud is large and the server is has difficultyhandling the relatively large amount of data. As adoption and additionalRFID tags are deployed, the situation will only get worse.

SUMMARY

The present invention concerns implementing systems and methods foroperating a tag reader. The methods comprise: performing tag readoperations by the tag reader to read tags; processing first informationreceived from the read tags to identify which tags are newly detectedtags; adding entries for the newly detected tags in a local list storedin a local memory of the tag reader; communicating second information atleast identifying the newly detected tags from the tag reader to aremote computing device; receiving, by the tag reader, feedbackinformation generated by the remote computing device which specifies atleast a count of entries added to a remote list stored in a remotedatastore based on the second information; and selectively outputting anotification from the tag reader based on the value of the count.

In some scenarios, the second information is communicated from the tagreader continuously or at every pre-defined interval of time. Theentries are added to the remote list based additionally on thirdinformation obtained from at least one other tag reader. At least afirst portion of the local list is cleared prior to when the tag readoperations are performed by the tag reader. A second portion of thelocal list includes exclusion information identifying tags that are notto be counted during a tag counting cycle. An entry is removed from thelocal list for at least one tag associated with an oldest tag read. Thesecond information further specifies at least one of a unique readeridentifier and a location of the tag reader. The feedback informationfurther specifies at least one of a percentage of cycle completion, auser efficiency, and an area of a facility in which tag reads still needto be performed. The notification is selectively output from the tagreader only when the value is a non-zero value. The notificationincludes, but is not limited to: at least one beep having a variablevolume or variable duration that correspondingly increases and decreaseswith changes in the value; and/or a plurality of beeps of a numberdefined by the value.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments will be described with reference to the following drawingfigures, in which like numerals represent like items throughout thefigures.

FIGS. 1A-1B (collectively referred to as “FIG. 1”) provide anillustration of a conventional inventory system.

FIG. 2 is an illustration of an exemplary inventory system implementingthe present solution.

FIG. 3 is an illustration of an exemplary architecture for a handheldRFID tag reader.

FIG. 4 is an illustration of an exemplary architecture for a sever.

FIGS. 5A-5C (collectively referred to herein as “FIG. 5”) provides aflow diagram of an exemplary method that is useful for understandingoperations of a handheld RFID tag reader that are performed during anRFID tag counting cycle.

FIG. 6 provides a flow diagram of an exemplary method that is useful forunderstanding operations of a server that are performed during an RFIDtag counting cycle.

DETAILED DESCRIPTION

It will be readily understood that the components of the embodiments asgenerally described herein and illustrated in the appended figures couldbe arranged and designed in a wide variety of different configurations.Thus, the following more detailed description of various embodiments, asrepresented in the figures, is not intended to limit the scope of thepresent disclosure, but is merely representative of various embodiments.While the various aspects of the embodiments are presented in drawings,the drawings are not necessarily drawn to scale unless specificallyindicated.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by this detailed description. Allchanges which come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

Reference throughout this specification to features, advantages, orsimilar language does not imply that all of the features and advantagesthat may be realized with the present invention should be or are in anysingle embodiment of the invention. Rather, language referring to thefeatures and advantages is understood to mean that a specific feature,advantage, or characteristic described in connection with an embodimentis included in at least one embodiment of the present invention. Thus,discussions of the features and advantages, and similar language,throughout the specification may, but do not necessarily, refer to thesame embodiment.

Furthermore, the described features, advantages and characteristics ofthe invention may be combined in any suitable manner in one or moreembodiments. One skilled in the relevant art will recognize, in light ofthe description herein, that the invention can be practiced without oneor more of the specific features or advantages of a particularembodiment. In other instances, additional features and advantages maybe recognized in certain embodiments that may not be present in allembodiments of the invention.

Reference throughout this specification to “one embodiment”, “anembodiment”, or similar language means that a particular feature,structure, or characteristic described in connection with the indicatedembodiment is included in at least one embodiment of the presentinvention. Thus, the phrases “in one embodiment”, “in an embodiment”,and similar language throughout this specification may, but do notnecessarily, all refer to the same embodiment.

As used in this document, the singular form “a”, “an”, and “the” includeplural references unless the context clearly dictates otherwise. Unlessdefined otherwise, all technical and scientific terms used herein havethe same meanings as commonly understood by one of ordinary skill in theart. As used in this document, the term “comprising” means “including,but not limited to”.

Referring now to FIGS. 1A-1B, there are provided illustrations that areuseful for understanding how a conventional inventory system 100operates. During operation, the server 110 accesses a database 112 toobtain a starting file 114 therefrom. The starting file 114 is thencommunicated from the server 110 to handheld RFID readers 102 ₁, 102 ₂,. . . , 102 _(N) via a network 108 (e.g., the Internet). Notably, thestarting file 114 is relatively large. As such, the transfer thereoffrom the server to the handheld RFID readers 102 ₁, 102 ₂, . . . , 102_(N) causes an undesirable delay at the start of a cycle countingprocess. Also, the file size might exceed the memory limits of thehandheld RFID readers 102 ₁, 102 ₂, . . . , 102 _(N).

Upon receipt of the starting file 114, the handheld RFID readers 102 ₁,102 ₂, . . . , 102 _(N) store the same in their local memories 116 ₁,116 ₂, . . . , 116 _(N). The starting file 114 comprises RFID taginformation for RFID tags that are to be counted and exclusion RFID taginformation for RFID tags that are not to be counted. In some scenarios,the RFID tag information includes a list of RFID tag identifiersidentifying RFID tags deployed in the inventory system 100 that shouldbe counted during a given cycle of the counting process. The exclusionRFID tag information includes a list of RFID tag identifiers that shouldnot be counted during a given cycle of the counting process.

Next, the handheld RFID readers 102 ₁, 102 ₂, . . . , 102 _(N) performtag counting by reading RFID tags 118 and tracking which RFID tags havebeen read. As part of this tag counting process, each handheld RFIDreader 102 ₁, 102 ₂, . . . , 102 _(N) removes RFID tag identifiers fordetected RFID tags from the RFID tag information of the locally storedstarting file 114 and issues at least one output (e.g., a beep and/or avisual counter) upon a detection of each new RFID tag (or removal of anRFID tag identifier from the locally stored starting file). Also, eachhandheld RFID reader 102 ₁, 102 ₂, . . . , 102 _(N) periodically sendsRFID tag information 120 ₁, 120 ₂, . . . 120 _(N) to the server 110 andother handheld RFID readers. This RFID tag information 120 ₁, 120 ₂, . .. , 120 _(N) includes RFID tag identifiers for RFID tags (newly andpreviously detected) which have been detected by the respective handheldRFID reader. This communication causes undesirable bandwidth utilizationin the system 100 since the RFID tag information must be distributed toall other RFID readers for purposes of preventing counting duplicationthereby.

Upon receipt of the RFID tag information, the server 110 performsoperations to update records associated with the RFID tags identifiedtherein. Since the server 110 receives RFID tag information from Nreaders (e.g., ≥10 readers), undesirable delays are caused in the recordupdating process.

The present solution cures the above identified drawbacks of theconventional inventory system 100. In this regard, each handheld RFIDreader of the present solution starts with an empty datastore forimmediate response (i.e., the starting file 114 no longer needs to bedownloaded at the start of a cycle counting process) and maintains thelocal datastore in a manner that prevents duplicate beeps thereby uponthe detection of RFID tags. Also, each handheld RFID reader sendsinformation for newly detected RFID tags to the sever at a relativelyrapid pace (e.g., continuously via streaming, or every 0.5-1.0 second).Notably, this information is not sent to other handheld RFID tagreaders. The server then inserts records for the newly detected RFIDtags as a batch into the database 112. Only globally unique RFID tagswill insert (duplicates reject off of Electronic Product Code (“EPC”)primary key) so the server will very quickly return a count of RFID tagidentifiers (or a count of datastore entries) inserted into the remotedatabase 112. The server only returns this count of inserted RFID tagidentifiers (or a count of datastore entries) to the respective handheldRFID reader. The respective handheld RFID reader now outputs anotification (e.g., beeps) based upon the remoted generated countreturned from the server 210, and not based on locally generatedinformation specifying the number of newly detected RFID tags (as isdone in the conventional system 100). This prevents duplicate beepsbetween handheld RFID readers.

Notably, in the present solution, the handheld RFID readers do not needto be provided with the other RFID tag information from the other RFIDreaders since the server notifies them as to how many globally uniqueRFID tags were found. This vastly reduces traffic in the system sincethe RFID tag information identifying RFID tags detected by each handheldRFID reader does not need to be distributed in real-time to the manyother handheld RFID readers.

If there is no server connectivity for one (1.0) second (or a longerperiod of time), then the handheld RFID readers output notifications(e.g., beeps) based on the locally generated information indicating oneor more occurrences of a newly detected RFID tags. This does not affectglobal counts once the sever is back online. Worst case is there aresome extra notification outputs (e.g., beeps). This really only evenmatters if there would have been zero (0) new RFID tags in view.Otherwise, the handheld RFID readers would legitimately beep anyway sothere is no difference in feedback to the users.

Cycle counting does not need instantaneous and specific beeping (e.g., aGeiger counter function), so the granularity and delay of the presentsolution does not affect cycle counting. Giving feedback to the usersevery M seconds based upon server feedback is sufficient, where M is adecimal (e.g., 0.5) or an integer (e.g., 1).

Referring now to FIG. 2, there is provided an illustration of anexemplary inventory system 200 that is useful for understanding thepresent solution. The present solution is described herein in relationto a retail store environment. The present solution is not limited inthis regard, and can be used in other environments. For example, thepresent solution can be used in distribution centers, factories andother commercial environments. Notably, the present solution can beemployed in any environment in which objects and/or items need to belocated and/or tracked.

Notably, the present solution is described herein in relation tohandheld RFID tag readers. However, the present solution is not limitedin this regard. For example, the present solution can alternatively oradditionally be implemented by robotic devices (e.g., autonomous RFIDreaders, drones, etc.).

System 200 is generally configured to provide an improved cycle countingprocess for RFID tags 224. As shown in FIG. 2, system 200 comprises aRetail Store Facility (“RSF”) 220 in which display equipment 218 isdisposed. The display equipment is provided for displaying objects (oritems) 222 to customers of the retail store. The display equipment caninclude, but is not limited to, shelves, article display cabinets,promotional displays, fixtures and/or equipment securing areas of theRSF 220. The RSF can also include emergency equipment (not shown),checkout counters and an EAS system (not shown). Emergency equipment,checkout counters, and EAS systems are well known in the art, andtherefore will not be described herein.

RFID tags 224 are respectively coupled to the objects (or items) 222 forinventorying and/or location tracking purposes. The RFID tags aredescribed herein as comprising single-technology tags that are only RFIDenabled. The present solution is not limited in this regard. The RFIDtags can alternatively or additionally comprise dual-technology tagsthat have both EAS and RFID capabilities.

At various times, it is desirable to perform counts of the RFID tags 224for inventory purposes. This RFID tag counting is achieved using atleast one handheld RFID tag reader 202 ₁, 202 ₂, . . . , 202 _(N). TheRFID tag counting process can begin immediately by the handheld RFID tagreader 202 ₁, 202 ₂, . . . , 202 _(N) provided that they know the totalcount and/or exclusion count for the cycle. Notably, there is no largelist download to each handheld RFID tag reader at the start of thecounting cycle as is done in the conventional system described above.

Each handheld RFID tag reader 202 ₁, 202 ₂, . . . , 202 _(N) isgenerally configured to read RFID tags 224. During the RFID tag readingprocess, each handheld RFID tag reader 202 ₁, 202 ₂, . . . , 202 _(N)maintains its own list 214 ₁, 214 ₂, . . . , 214 _(N) of previously readRFID tags. This list is initially cleared or empty (optionally exceptfor exclusion RFID tag information). The list can include, but is notlimited to, a First-In-First-Out (“FIFO”) list in which the RFID taginformation associated with the oldest RFID tag reads is discarded oncethe list becomes full. In some scenarios, 700,000 entries is sufficientto guarantee no discards for at least an hour which covers a largephysical area so duplicates are unlikely from purging old tags.

The handheld RFID tag readers 202 ₁, 202 ₂, . . . , 202 _(N) alsocommunicate RFID tag read information (e.g., EPCs) and/or cycle countinginformation to and from a remote server 210. Server 210 is generallyconfigured to monitor and track the progress of the RFID tag countingprocess and/or user efficiency. In this regard, the server 210 reads andwrites data from datastore 212. Datastore comprises, but is not limitedto, a Structured Query Language (“SQL”) database and/or a NoSQLdatabase. Real-time status of the progress of the cycle counting ispossible by monitoring a total number of RFID tags found against anexpected number of RFID tags taking into account any exclusions. Userefficiency can be tracked by having transmissions to the server includeunique reader identifiers for the handheld RFID tag readers (e.g., MediaAccess Control (“MAC”) addresses). Transmission delays from the handheldRFID readers due to loss of network connectivity can be handled bykeeping track of the time delay and have this subtracted from the timein the server.

In some scenarios, the RFID tag counting is achieved using a single zonetheory. Alternatively, the RFID tag counting is achieved using amulti-zone theory, i.e., the present solution supports multiplesimultaneous zones to which the RFID tag readers are respectivelyassigned. Lists containing different exclusion RFID tag information arestored in the database 212 so as to be respectively associated with thezones, i.e., an exclusion list for each zone is stored in the datastore.Zone level tracking of cycle count efficiency can be tracked by theserver and displayed to the user via the RFID tag reader. This givesselective feedback to the user without having to send and receive largeamounts of data for the RFID tag readers.

In some zone based scenarios, beacons 226 and/or locator tags 228 can bedisposed in the RSF 220 to provide location information to the RFID tagreaders so that their movements can be tracked by the sever 210. Theserver 210 can use this location information to track coverage by zoneand track zones of unread tags. This can also be used to validate thatthe RFID tag readers have been used in each zone. The handheld RFID tagreaders 202 ₁, 202 ₂, . . . , 202 _(N) could add the current zone to theRFID tag information as it is sent to the server 210, thereby allowingthe locations of the RFID tags to be tracked. The handheld RFID tagreaders 202 ₁, 202 ₂, . . . , 202 _(N) can be directed to specific zonesand employees searching for inventory can have a general location tobegin their searching for a particular object (or item).

Notably, the scalability of system 200 is only limited by the size ofthe database 212 which can be made successively larger. Traffic from thehandheld RFID tag readers 202 ₁, 202 ₂, . . . , 202 _(N) to the server210 is minimized in system 200 by limiting the same to includeinformation relating to the new RFID tag detections thereby. There is nooverhead in system 200 to distribute RFID tag read data to all otherhandheld RFID readers involved in the inventorying process. In order tominimize the system's transmission overhead, the new RFID taginformation is streamed or batched at relatively short intervals (e.g.,0.5 or 1.0 second intervals). The interval length is selected so thatappropriate feedback is provided to the user about the tag countingprocess (e.g., new RFID tag detections and progress of the tag countingprocess). The RFID tag information may be compressed prior tocommunication to the server 210.

As with many communication systems, system 200 may experience technicaldifficulties with communications to and from network nodes. In thiscase, the system is in an off-line state. The handheld RFID tag readerscan still provide feedback to the user even though they are notreceiving count data from the server 210. Each handheld RFID tag readerwill synchronize with the server 210 when the system no longerexperiences technical difficulties (or is in an on-line state). Duringthe synchronization period, the handheld RFID tag reader sends the newRFID tag information which has been held during the off-line state, andignores feedback count information from the server (because the time forfeedback has already passed). Optionally, some level of optimizationcould be done by sending RFID tag read data from adjacent areas or thesame floor to adjacent handheld RFID tag readers to prevent beeping whenthe system is in its off-line state or when the response is too slow.

In order to maintain consistent feedback to the user, the timing of thefeedback may be locally managed by the RFID tag readers regardless ofthe feedback from the server. If new RFID tag information is sent fromthe RFID tag readers every M seconds (e.g., 0.5-1.0 seconds), then thefeedback is given to the user every M seconds (e.g., 0.5-1.0 seconds).If the server 210 has responded in time, then the feedback correspondswith the results from the server. If the time to respond was missed,then the RFID tag reader responds to the user based upon the count ofnew locally found tags. This produces no negative impact other than theuser thinks (s)he has found more globally unique RFID tags than (s)hehas actually found.

During operation, two or more handheld RFID tag readers may detect thesame RFID tag and send corresponding information to the server. In thiscase, the sever is operative to detect duplicate detections of the sameRFID tag and insert a single entry for this RFID tag in the list/recordsof the datastore 212. For faster performance, the EPC codes of the RFIDtags can be used as the datastore index so that an insert of the newRFID tags can be done and the datastore will return the number ofinserts (new RFID tags) without having to do specific searches of alarge datastore for duplicates or to modify tag records. Time of insertcan be automatically generated at the datastore insert so that this doesnot need to be done at the handheld RFID tag readers and transmitted tothe server. This eliminates the need for synchronizing the clocks in thehandheld RFID readers.

The present solution not limited to the system architecture shown inFIG. 2. For example, two or more networks, servers and datastores can beused to implement the present solution as opposed to only one thereof asshown in FIG. 2.

Referring now to FIG. 3, there is provided a detailed block diagram ofan exemplary architecture for a handheld RFID tag reader 300. HandheldRFID tag readers 202 ₁, 202 ₂, . . . , 202 _(N) of FIG. 2 are the sameas or similar to handheld RFID tag reader 300. As such, the discussionof handheld RFID tag reader 300 is sufficient for understanding handheldRFID tag readers 202 ₁, 202 ₂, . . . , 202 _(N).

Handheld RFID tag reader 300 may include more or less components thatthat shown in FIG. 3. However, the components shown are sufficient todisclose an illustrative embodiment implementing the present solution.Some or all of the components of the handheld RFID tag reader 300 can beimplemented in hardware, software and/or a combination of hardware andsoftware. The hardware includes, but is not limited to, one or moreelectronic circuits. The electronic circuit may comprise passivecomponents (e.g., capacitors and resistors) and active components (e.g.,processors) arranged and/or programmed to implement the methodsdisclosed herein.

The hardware architecture of FIG. 3 represents an embodiment of arepresentative handheld RFID tag reader 300 configured to facilitate animproved cycle counting process for RFID tags (e.g., RFID tags 224 ofFIG. 2). In this regard, the handheld RFID tag reader 300 comprises anRF enabled device 350 for allowing data to be exchanged with an externaldevice (e.g., RFID tags 224 of FIG. 2) via RF technology. The components304-316 shown in FIG. 3 may be collectively referred to herein as the RFenabled device 350, and include a power source 312 (e.g., a battery).

The RF enabled device 350 comprises an antenna 302 for allowing data tobe exchanged with the external device via RF technology (e.g., RFIDtechnology or other RF based technology). The external device maycomprise RFID tags 224 of FIG. 2. In this case, the antenna 302 isconfigured to transmit RF carrier signals (e.g., interrogation signals)to the listed external devices, and/or transmit data response signals(e.g., authentication reply signals) generated by the RF enabled device350. In this regard, the RF enabled device 350 comprises an RFtransceiver 308. RFID transceivers are well known in the art, andtherefore will not be described herein. However, it should be understoodthat the RF transceiver 308 receives RF signals including informationfrom the transmitting device, and forwards the same to a logiccontroller 310 for extracting the information therefrom.

The extracted information can be used to identify which RFID tags of aplurality of RFID tags has been read thereby and/or to determine alocation of the handheld RFID tag reader 300 within a facility (e.g.,RSF 220 of FIG. 2). Accordingly, the logic controller 310 can store theextracted information in local memory 304, and execute algorithms usingthe extracted information. For example, the logic controller 310 can:clear or empty a local list 318 (e.g., a FIFO list) at the start or endof a counting cycle; populate the local list 318 with RFID tagidentifiers (e.g., EPC codes) contained in the extracted information;discard entries in the local list 318 based on the time of thecorresponding RFID tag reads; maintain a count of how many RFID tagshave been read thereby; identify and ignore information associated withduplicate RFID tag reads; log information indicating that duplicatereads of a given RFID tag has occurred; cause information relating toRFID tag reads to be communicated to a remote server (e.g., server 210of FIG. 2); receive feedback information from the remote server (e.g.,server 210 of FIG. 2) indicating the number of RFID tag identifiers(associated with RFID tags recently read thereby) that have beeninserted into a remote list stored in a datastore (e.g., datastore 212of FIG. 2) and/or a percentage of counting cycle completion; optionallygenerate a timestamp for each RFID tag identifier entry into the locallist 318; optionally store the timestamps in the local list 318 so as tobe respectively associated with the list entries; cause an audiblenotification (e.g., a beep) and/or visual notification (e.g., a totalcount indicator or cycle completion indicator) to be output from thehandheld RFID tag reader based on the contents of count informationreceived from the remote server and/or based on locally generatedinformation indicating a number of RFID tags which have been detectedthereby; optionally perform operations to determine the location of theRFID tags within the facility; and/or optionally cause locationinformation for the RFID tags to be sent to the remote server. Otherfunctions of the logic controller 310 will become evident as thediscussion progresses.

In some scenarios, the audible notification is output when the countinformation contains a non-zero numerical value. For example, if thecount information contains a numerical value of zero, then the handheldRFID reader does not output any audible or count related update to theuser (as if no RFID tags were found). In contrast, if the countinformation contains a numerical value of an integer greater than one,then the handheld RFID tag reader provides audible feedback to the userin proportion to the number of new RFID tags detected. The handheld RFIDtag reader also updates its internal counter accordingly. This gives theuser feedback about how many RFID tags may still be in the area ofscanning. As an optimization, user feedback could be grouped into small,medium and large feedback sounds or visual indicators. This reduces theoverhead of the handheld RFID reader for giving feedback on each newRFID tag detected.

Methods for determining the locations of RFID tags in a facility (e.g.,facility 220 of FIG. 2) are well known in the art. Any known method fordetermining such locations can be used herein without limitation. Forexample, the present solution can employ beacons (e.g., beacons 226 ofFIG. 2) and/or locator tags (e.g., locator tags 228 of FIG. 2) withknown locations for this purpose. The locator tags can include, but arenot limited to, RFID tags.

Notably, memory 304 may be a volatile memory and/or a non-volatilememory. For example, the memory 304 can include, but is not limited to,a Random Access Memory (“RAM”), a Dynamic Random Access Memory (“DRAM”),a Static Random Access Memory (“SRAM”), a Read-Only Memory (“ROM”) and aflash memory. The memory 304 may also comprise unsecure memory and/orsecure memory. The phrase “unsecure memory”, as used herein, refers tomemory configured to store data in a plain text form. The phrase “securememory”, as used herein, refers to memory configured to store data in anencrypted form and/or memory having or being disposed in a secure ortamper-proof enclosure.

Instructions 322 are stored in memory for execution by the RF enableddevice 350 and that cause the RF enabled device 350 to perform any oneor more of the methodologies of the present disclosure. The instructions322 are generally operative to facilitate an improved RFID tag countingprocess. Other functions of the RF enabled device 350 will becomeapparent as the discussion progresses.

The handheld RFID tag reader 300 may also comprise an optional beaconreceiver 360. The beacon receiver 360 is generally configured to:receive a command signal from the RF enabled device 350 to obtain uniqueIDs from beacons; send signals to the beacons (e.g., beacons 226 of FIG.2) requesting that unique IDs be transmitted therefrom; receive signalstransmitted from the beacons; parse unique IDs from the receivedsignals; and communicate the unique IDs to the RF enabled device 350.The command signal can be generated by and sent from the RF enableddevice 350 in response to an operator's depression of a trigger 370.

The handheld RFID tag reader 300 may further comprise an optionalproximity sensor 362 (e.g., an acoustic sensor or infrared sensor). Theproximity sensor 362 detects the distance from the handheld RFID tagreader 300 to the RFID tags being read (e.g., RFID tags 224 of FIG. 2).A distance threshold value can be applied to trigger the location mode.The distance can be used to adjust the read power of the handheld readerand/or to compute more precise RFID tag locations.

Referring now to FIG. 4, there is provided a detailed block diagram ofan exemplary architecture for a server 400. Server 210 of FIG. 2 is thesame as or substantially similar to server 400. As such, the followingdiscussion of server 400 is sufficient for understanding server 210.

Notably, the server 400 may include more or less components than thoseshown in FIG. 4. However, the components shown are sufficient todisclose an illustrative embodiment implementing the present solution.The hardware architecture of FIG. 4 represents one embodiment of arepresentative server configured to facilitate an improved cyclecounting process for RFID tags (e.g., RFID tags 224 of FIG. 2). As such,the server 400 of FIG. 4 implements at least a portion of a method forcounting RFID tags in accordance with the present solution. Some or allthe components of the server 400 can be implemented as hardware,software and/or a combination of hardware and software. The hardwareincludes, but is not limited to, one or more electronic circuits. Theelectronic circuits can include, but are not limited to, passivecomponents (e.g., resistors and capacitors) and/or active components(e.g., amplifiers and/or microprocessors). The passive and/or activecomponents can be adapted to, arranged to and/or programmed to performone or more of the methodologies, procedures, or functions describedherein.

As shown in FIG. 4, the server 400 comprises a user interface 402, aCentral Processing Unit (“CPU”) 406, a system bus 410, a memory 412connected to and accessible by other portions of server 400 throughsystem bus 410, and hardware entities 414 connected to system bus 410.The user interface can include input devices (e.g., a keypad 450) andoutput devices (e.g., speaker 452, a display 454, and/or light emittingdiodes 456), which facilitate user-software interactions for controllingoperations of the server 400.

At least some of the hardware entities 414 perform actions involvingaccess to and use of memory 412, which can be a Random Access Memory(“RAM”), a disk driver and/or a Compact Disc Read Only Memory(“CD-ROM”). Hardware entities 414 can include a disk drive unit 416comprising a computer-readable storage medium 418 on which is stored oneor more sets of instructions 420 (e.g., software code) configured toimplement one or more of the methodologies, procedures, or functionsdescribed herein. The instructions 420 can also reside, completely or atleast partially, within the memory 412 and/or within the CPU 406 duringexecution thereof by the server 400. The memory 412 and the CPU 406 alsocan constitute machine-readable media. The term “machine-readablemedia”, as used here, refers to a single medium or multiple media (e.g.,a centralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions 420. The term“machine-readable media”, as used here, also refers to any medium thatis capable of storing, encoding or carrying a set of instructions 420for execution by the server 400 and that cause the server 400 to performany one or more of the methodologies of the present disclosure.

In some scenarios, the hardware entities 314 include an electroniccircuit (e.g., a processor) programmed for facilitating the provision ofan improved inventory process. In this regard, it should be understoodthat the electronic circuit can access and run a tag countingapplication 424 installed on the server 400. The software application424 is generally operative to facilitate the: reception of RFID taginformation from remote RFID tag readers (e.g., handheld RFID tagreaders 202 ₁, 202 ₂, . . . , 202 _(N)); processing of received RFID taginformation; adding new RFID tag information to a list of a master cyclecount datastore (e.g., datastore 212 of FIG. 2); generation oftimestamps for each RFID identifier's entry into the list of the mastercycle count datastore; maintaining of a count of how many new RFID tagshave been read by the handheld RFID tag readers; identification andignoring of information associated with duplicate RFID tag reads by oneor more RFID tag readers; logging of information indicating thatduplicate reads of a given RFID tag has occurred; generation of a countvalue representing the number of RFID tag identifiers (e.g., EPC codes)inserted into the list of the master cycle count database; and/orcommunication of the count value and/or a cycle completion value to thehandheld RFID tag readers. The cycle completion value can be computed asthe number of records in a cycle count database relative to the total ofexpected number of records. Other functions of the software application324 will become apparent as the discussion progresses.

Exemplary Methods for Counting RFID Tags in a Facility

Referring now to FIG. 5, there is provided a flow diagram of anexemplary method 500 for counting RFID tags (e.g., RFID tags 224 of FIG.2) within a facility (e.g., RSF 220 of FIG. 2). Method 500 begins with502 and continues with 504. In 504, a counting cycle is initiated. Thecounting cycle can be initiated in response to a user-softwareinteraction with the RFID tag reader (e.g., handheld RFID tag reader 202₁, 202 ₂, . . . , 202 _(N) of FIG. 2) or the RFID tag reader's receptionof a cycle start command sent from an external device (e.g., server 210of FIG. 2).

In some scenarios, the system (e.g., system 200 of FIG. 2) provides acycle resume option or a new cycle start option. If the cycle resumeoption is selected, then the RFID tag reader continues to use a locallist (e.g., list 214 ₁, 214 ₂, . . . , 214 _(N) of FIG. 2 or list 318 ofFIG. 3) which is at least partially filled with previous tag readentries during method 500. In contrast, if the new cycle start option isselected, then optional 506 is performed. In 506, at least a firstportion of the local list is cleared. A second portion of the local listmay include exclusion RFID tag information (e.g., EPCs for RFID tagsthat are not to be counted during the counting cycle). In this case, thesecond portion of the local list is not cleared.

Next in 508, the RFID tag reader performs operations to read a pluralityof RFID tags. The RFID tag reader also determines if the local list isfull. If the local list is full [510: YES], then entries are removedtherefrom for the RFID tags associated with the oldest tag reads.Thereafter, method 500 continues with 514 where entries are added to thelist. If the local list is not full [510: NO], entries are added to thelist in 514 for new RFID tags read in 508. Notably, duplicate tag readsare ignored and/or logged.

Upon completing 514, RFID tag read related information needs to sent tothe server for purposes of synchronizing the local list with a remotelist. This RFID tag read related information can be continuously sent(e.g., streamed) or periodically sent every so many seconds. In thelatter case, the RFID tag reader performs a decision in 516. Thedecision is performed to determine if a pre-defined period of time(e.g., 0.5 or 1.0 seconds) has expired. If not [516: NO], then method500 returns to 508 so that more RFID tags can be read. In contrast, ifthe pre-determined period of time has expired [516: YES], then optional518 is performed where data is compressed prior to transmission to anexternal device. The data includes, but is not limited to, a uniquereader identifier, a location of the RFID tag reader, and/or unique RFIDtag identifiers (e.g., EPCs) for the RFID tag reads in 508. Uponcompleting 516 or 518, method 500 continues with 520 of FIG. 5B.

As shown in FIG. 5B, 520 involves determining if a sever (e.g., server210 of FIG. 2) is on-line. If the server is on-line [520: YES], then 522is performed where the compressed data is communicated from the RFID tagreader to the remote server. In turn, the RFID tag reader receivesfeedback information from the remote server, as shown by 524. Thefeedback information includes, but is not limited to, (a) the percentageof cycle completion, (b) a user efficiency, (c) a number of entriesadded to a remote list for unique new RFID tags detected thereby, and/or(d) areas of a facility in which RFID tag reads need to be performed.The feedback information is then processed in 526 to determine a valuespecified by portion (c). If this value is zero, then 532 is performedwhere method 500 ends or other processing is performed (e.g., return to508).

In contrast, if the value is non-zero (e.g., ≥1), then feedbackinformation is output to the user of the RFID tag reader. The outputincludes, but is not limited to, a notification indicating the value ofthe non-zero number and/or indicator(s) of the total number of currentnew RFID tag detections made thereby, the percentage of cyclecompletion, user efficiency, and/or areas in the facility that stillneed to be visited. Notably, the notification can change based on thevalue of the non-zero number. For example, the notification can include:at least one beep that has a variable volume and/or variable durationthat correspondingly increase(s) and decrease(s) with changes in thevalue contained in feedback information received from the server; or thesame number of beeps as the non-zero number. The present solution is notlimited in this regard. Subsequently, 532 is performed where method 500ends or other processing is performed (e.g., return to 508).

If the server is off-line [520: NO], then method 500 continues withoptional 536 of FIG. 5C. As shown in FIG. 5C, 536 involves communicatingthe unique RFID tag identifiers for detected RFID tags to other RFID tagreaders to optimize feedback to the users thereof (e.g., for preventingbeeps for duplicate reads on more than one device). In next 540, anotification (e.g., a beep) is output from the RFID tag readerindicating the number of new RFID tags detected based on local tag readinformation. When the sever comes back on-line [542: YES], the RFID tagreader performs operations to synchronize RFID tag read informationtherewith, as shown by 544. Subsequently, method 500 ends or otherprocessing is performed (e.g., return to 508).

Referring now to FIG. 6, there is provided a flow diagram of anexemplary method 600 that is useful for understanding operations of aserver (e.g., server 210 of FIG. 2) that are performed during an RFIDtag counting cycle. Method 600 begins with 602 and continues with 604where compressed data is received at the server. The compressed data wassent from an RFID tag reader (e.g., handheld RFID reader 202 ₁, 202 ₂, .. . , or 202 _(N) of FIG. 2). The compressed data includes, but is notlimited to, data specifying a unique reader identifier, a location of anRFID tag reader, and/or unique RFID tag identifiers (e.g., EPCs) for theRFID tags read by the RFID tag reader.

At the server, the unique reader identifier and/or unique RFID tagidentifiers of the compressed data are used in 606 to determine apercentage of cycle completion for the RFID tag reader. The determinedpercentage is stored in a datastore (e.g., datastore 212 of FIG. 2). Theserver also processes the unique RFID tag identifiers in 608 to identifyduplicate tag reads made by the RFID tag reader or another RFID tagreader. The server than discards the unique RFID tag identifiers thatare associated with the identified duplicate tag reads, as shown by 610.The duplicate tag reads can also be logged. In 612, entries for theremaining RFID tag identifiers are then added to a remote list stored inthe datastore. Timestamps for the entries are generated by the serverand respectively stored along with the entries. The server furtherprocesses the location data in 614 to identify areas of a facility inwhich RFID tag reads still need to be performed by the RFID tag reader.Upon completing 614, the server communicates feedback information to theRFID tag reader as shown by 616. The feedback information comprisesinformation specifying (a) the percentage of cycle completion, (b) auser efficiency, (c) a number of entries added to a remote list forunique new RFID tags detected thereby, and/or (d) areas of a facility inwhich RFID tag reads need to be performed.

In some scenarios, the server also performs other data analytics andprovides results of the data analytics to a user thereof via a graphicaluser interface (e.g., a dashboard), as shown by 618. This informationcan include, but is not limited to, a map of areas/zones showing thepercentage of tag read completion by one or more RFID tag readers,relative completion states of the RFID tag readers, efficiencies of theRFID tag readers, duplications of RFID tag reader coverage, RFID tagreader locations, and/or RFID tag locations relative to locations ofRFID tag readers. All or a portion of this information may becommunicated to the RFID tag reader in 620. Subsequently, method 600ends or other processing is performed.

Although the invention has been illustrated and described with respectto one or more implementations, equivalent alterations and modificationswill occur to others skilled in the art upon the reading andunderstanding of this specification and the annexed drawings. Inaddition, while a particular feature of the invention may have beendisclosed with respect to only one of several implementations, suchfeature may be combined with one or more other features of the otherimplementations as may be desired and advantageous for any given orparticular application. Thus, the breadth and scope of the presentinvention should not be limited by any of the above describedembodiments. Rather, the scope of the invention should be defined inaccordance with the following claims and their equivalents.

What is claimed is:
 1. A method for operating a tag reader, comprising:performing tag read operations by the tag reader to read tags;processing first information received from the read tags to identifywhich tags are newly detected tags; adding entries for the newlydetected tags in a local list stored in a local memory of the tagreader; communicating second information at least identifying the newlydetected tags from the tag reader to a remote computing device;receiving, by the tag reader, feedback information generated by theremote computing device which specifies at least a count of entriesadded to a remote list stored in a remote datastore based on the secondinformation, wherein the entries are added to the remote list basedadditionally on third information obtained from at least one other tagreader; selectively outputting a notification from the tag reader basedon the value of the count; and removing an entry from the local list forat least one tag associated with an oldest tag read.
 2. The methodaccording to claim 1, further comprising performing operations by thetag reader to clear at least a first portion of the local list prior towhen the tag read operations are performed by the tag reader.
 3. Themethod according to claim 2, wherein a second portion of the local listincludes exclusion information identifying tags that are not to becounted during a tag counting cycle.
 4. The method according to claim 1,wherein the second information further specifies at least one of aunique reader identifier and a location of the tag reader.
 5. The methodaccording to claim 1, wherein the feedback information further specifiesat least one of a percentage of cycle completion, a user efficiency, andan area of a facility in which tag reads still need to be performed. 6.The method according to claim 1, wherein the notification is selectivelyoutput from the tag reader only when the value is a non-zero value. 7.The method according to claim 1, wherein the notification comprises: atleast one beep having a variable volume or variable duration thatcorrespondingly increases and decreases with changes in the value; or aplurality of beeps of a number defined by the value.
 8. The methodaccording to claim 1, wherein the second information is communicatedfrom the tag reader continuously.
 9. The method according to claim 1,wherein the second information is communicated from the tag reader atevery pre-defined interval of time.
 10. A tag reader, comprising: aprocessor; and a non-transitory computer-readable storage mediumcomprising programming instructions that are configured to cause theprocessor to implement a method for inventory management, wherein theprogramming instructions comprise instructions to: process firstinformation received from tags read by the tag reader to identify whichtags are newly detected tags; add entries for the newly detected tags ina local list stored at the tag reader; cause second information at leastidentifying the newly detected tags to be communicated from the tagreader to a remote computing device; receive feedback informationgenerated by the remote computing device which specifies at least acount of entries added to a remote list stored in a remote datastorebased on the second information, wherein the entries are added to theremote list based additionally on third information obtained from atleast one other tag reader; cause a notification to be selectivelyoutput from the tag reader based on the value of the count; and removean entry from the local list for at least one tag associated with anoldest tag read.
 11. The tag reader according to claim 8, wherein theprogramming instructions further comprise instructions to clear at leasta first portion of the local list prior to when the tag read operationsare performed by the tag reader.
 12. The tag reader according to claim9, wherein a second portion of the local list includes exclusioninformation identifying tags that are not to be counted during a tagcounting cycle.
 13. The tag reader according to claim 8, wherein thesecond information further specifies at least one of a unique readeridentifier and a location of the tag reader.
 14. The tag readeraccording to claim 8, wherein the feedback information further specifiesat least one of a percentage of cycle completion, a user efficiency, andan area of a facility in which tag reads still need to be performed. 15.The tag reader according to claim 8, wherein the notification isselectively output from the tag reader only when the value is a non-zerovalue.
 16. The tag reader according to claim 8, wherein the notificationcomprises: at least one beep having a variable volume or variableduration that correspondingly increases and decreases with changes inthe value; or a plurality of beeps of a number defined by the value. 17.The tag reader according to claim 8, wherein the second information iscommunicated from the tag reader continuously.
 18. The tag readeraccording to claim 8, wherein the second information is communicatedfrom the tag reader at every pre-defined interval of time.
 19. A methodfor operating a tag reader, comprising: performing tag read operationsby the tag reader to read tags; processing first information receivedfrom the read tags to identify which tags are newly detected tags;adding entries for the newly detected tags in a local list stored in alocal memory of the tag reader; communicating second information atleast identifying the newly detected tags from the tag reader to aremote computing device, wherein the second information is communicatedfrom the tag reader continuously or at every pre-defined interval oftime; receiving, by the tag reader, feedback information generated bythe remote computing device which specifies at least a count of entriesadded to a remote list stored in a remote datastore based on the secondinformation; and selectively outputting a notification from the tagreader based on the value of the count.
 20. A tag reader, comprising: aprocessor; and a non-transitory computer-readable storage mediumcomprising programming instructions that are configured to cause theprocessor to implement a method for inventory management, wherein theprogramming instructions comprise instructions to: process firstinformation received from tags read by the tag reader to identify whichtags are newly detected tags; add entries for the newly detected tags ina local list stored at the tag reader; cause second information at leastidentifying the newly detected tags to be communicated from the tagreader to a remote computing device, wherein the second information iscommunicated from the tag reader continuously or at every pre-definedinterval of time; receive feedback information generated by the remotecomputing device which specifies at least a count of entries added to aremote list stored in a remote datastore based on the secondinformation; and cause a notification to be selectively output from thetag reader based on the value of the count.